package com.jt.controller;

import com.jt.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.Arrays;

@Controller
@ResponseBody  //将我们的数据转化为特殊的字符串转会
@CrossOrigin   //允许跨域
public class UserController {

    /**
     * URL地址：http://localhost:8080/hello   get请求
     *         http://localhost:8080/dog   get请求
     *         http://localhost:8080/cat   get请求
     * 参数 ： 无
     * 返回值： 你好”SpringMVC“的字符串
     */
    @RequestMapping("/hello")
    public String hello(){
        return "<h1>你好,SpringMVC</h1>";
    }

    @RequestMapping("/dog")
    public String dog(){
        return "<h1>小狗汪汪汪~</h1>";
    }

    @RequestMapping("/cat")
    public String cat(){
        return "<h1>小猫咪咪咪~</h1>";
    }

    /**
     * 需求：接受参数 name  = xxx age = xxx
     * url:http://localhost:8080/findUserByNA?name=tomcat&age=18
     * 返回值：“数据正确：name:age”
     * 知识点1：
     *      1.通过url中的key获取数据.
     */
    @RequestMapping("/findUserByNA")
    public String findUserByNA(String name,int age){
        return "数据正确"+name+age;
    }

    /**
     * 需求：接受参数 name  = xxx age = xxx
     * url:http://localhost:8080/findUserByNA2?name=tomcat&age=18&id=1&sex=秀吉
     * 返回值：“数据正确：name:age”
     * 知识点1：
     *      1.通过url中的key获取数据.
     *      2.如果参数众多，则可以使用对象的方式接受，要求必须有set方法
     */
    @RequestMapping("/findUserByNA2")
    public String findUserByNA2(User user){
        return user.toString();
    }

    /**
     * 需求：接受参数 name  = xxx age = xxx
     * url:http://localhost:8080/hobby?name=tomcat&age=18&id=1&sex=秀吉&hobby=敲代码,打游戏,睡觉,熬夜
     * 返回值：获取的参数返回
     * 知识点1：
     *      1.通过url中的key获取数据.
     *      2.如果参数众多，则可以使用对象的方式接受，要求必须有set方法
     */
    @RequestMapping("/hobby")
    public String hobby(User user){
        return user.toString();
    }

    /**
     * url地址：
     * http://localhost:8080/findUser/唐天舞/18/秀吉
     * 参数：name/age/sex
     * 返回值：返回值获取的数据
     * restFul语法：
     *      1.参数于参数使用/分割
     *      2.需要接受的参数使用{}包裹
     *      3.参数接收时采用@PathVariable取值
     * 简化写法：如果{name}的属性于对象的属性名成一致  则可以使用对象接受
     */
    @RequestMapping("/findUser/{name}/{age}/{sex}")
    public String findUser(User user){
        return "<h1>"+user.toString()+"</h1>";
    }
    /**
     * JSON
     * ["hehe","haha",{"id":"12","name":"张三","age":"18","hobby":["打篮球","打羽毛球","乒乓球",["hehe","haha","heihei",{"lokin":"天地一剑","name":"王权富贵"}]]},"大妈"]
     */

    /**
     * URL:http://localhost:8080/findJSON?name=唐天舞&age=18&id=1&sex=秀吉&hobby=修仙,冰肌玉骨,天仙之姿
     * 参数：name=tomcat&age=18
     * 返回值：User对象的JSON
     * 知识点:
     *      1.@ResponseBody //将返回值转换成JSON串
     *      2.如果返回String类型，则@ResponseBody将字符串本身返回给前端
     */
    @RequestMapping("/findJSON")
    @ResponseBody   //将我们的返回值转换成JSON
    public User findJSON(User user){
        return user;
    }

}
